package web.fabrimind.tas.mapper;

import java.util.List;
import web.fabrimind.tas.domain.MaterialOutboundApply;
import web.fabrimind.tas.domain.MaterialOutboundApplyDetail;

/**
 * 物料出库申请Mapper接口
 *
 * @author zhihui
 * @date 2025-04-04
 */
public interface MaterialOutboundApplyMapper
{
    /**
     * 查询物料出库申请
     *
     * @param applyId 物料出库申请主键
     * @return 物料出库申请
     */
    public MaterialOutboundApply selectMaterialOutboundApplyByApplyId(Long applyId);

    /**
     * 查询物料出库申请列表
     *
     * @param materialOutboundApply 物料出库申请
     * @return 物料出库申请集合
     */
    public List<MaterialOutboundApply> selectMaterialOutboundApplyList(MaterialOutboundApply materialOutboundApply);

    /**
     * 新增物料出库申请
     *
     * @param materialOutboundApply 物料出库申请
     * @return 结果
     */
    public int insertMaterialOutboundApply(MaterialOutboundApply materialOutboundApply);

    /**
     * 修改物料出库申请
     *
     * @param materialOutboundApply 物料出库申请
     * @return 结果
     */
    public int updateMaterialOutboundApply(MaterialOutboundApply materialOutboundApply);

    /**
     * 删除物料出库申请
     *
     * @param applyId 物料出库申请主键
     * @return 结果
     */
    public int deleteMaterialOutboundApplyByApplyId(Long applyId);

    /**
     * 批量删除物料出库申请
     *
     * @param applyIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteMaterialOutboundApplyByApplyIds(Long[] applyIds);

    /**
     * 批量删除物料出库申请明细
     *
     * @param applyIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteMaterialOutboundApplyDetailByApplyIds(Long[] applyIds);

    /**
     * 批量新增物料出库申请明细
     *
     * @param materialOutboundApplyDetailList 物料出库申请明细列表
     * @return 结果
     */
    public int batchMaterialOutboundApplyDetail(List<MaterialOutboundApplyDetail> materialOutboundApplyDetailList);


    /**
     * 通过物料出库申请主键删除物料出库申请明细信息
     *
     * @param applyId 物料出库申请ID
     * @return 结果
     */
    public int deleteMaterialOutboundApplyDetailByApplyId(Long applyId);
}
